Часть первая, с блекджеком и стратегиями

Фиксированная стратегия: говорить stand, если у нас на руках комбинация в 19, 20 или 21 очко, во всех остальных случаях говорить hit.

В этом задании будем использовать стандартную среду Blackjack-v1 с бесконечной колодой.

В качестве обучения (будем учить Value-function, так как стратегия фиксирована) будем использовать метод Monte-Carlo control on policy.

Часть вторая, удвоенная

Здесь нам необходимо реализовать дополнительно свою среду, которая в которой бы появилось третье действие "удвоить ставку". Для того, чтоб "помочь" игроку понять, когда нужно удваивать, добавим в состояние очки дилера и есть ли туз (usable ace).

Для обучения реализуем метод Monte-Carlo control off policy

Примеры состояний, в которых выгодны и не выгодны действия агента (разбитые по типам действий):

Часть третья, в главной роли — Дастин Хоффман

Здесь нам потребуется реализовать новую среду - BlackJack с одной колодой, чтоб можно было осуществить подсчет карт. Понятно, что мы не сможем полностью подсчитывать значение каждой карты, так как это увеличило бы количество состояний на несколько порядков $counts\_of\_cards\_in\_game^{number\_of\_cards} = 5_{cards\_from\_2\_to\_9} ^ 8 * 17_{10\_queen\_king\_jack} * 5_{ace}$

Поэтому воспользуемся для подсчета количества карт системой "плюс-минус":

Карты Очки
2, 3, 4, 5, 6 +1
7, 8, 9 0
10, В, Д, К, Т -1

Эту сумму и будет генерировать среда (исходя из своего внутреннего состояния)

Примеры состояний и действий (выгодных и невыгодных)

Поиск с известной стратегией

Для начала обучим вероятности переходов между состояниями.

Будем решать уравнение Беллмана для $Q(s, a)$. Из обученной ранее модели среды у нас есть вероятности переходов: $$p(s, a, s', r)$$

Далее нам предстоит решить систему линейных уравнений: $$Q(s, a) = \mathbb{E_{\pi}} [G_t | S_t = s, A_t = a] = \sum_{s', r} p(s, a, s', r) (r + \gamma Q^*(s', a'))$$

Воспользуемся итеративным процессом поиска решения до сходимости (будем итеративно обновлять $Q(s, a)$ до тех пор, пока изменения будут больше $\epsilon$)

Обученная функция $Q(s, a)$